Pruebas locales
Requisitos Previos
-
Python: Verificar tener Python instalado en tu sistema.
-
Docker: Verificar tener Docker instalado en tu sistema.
-
Postman: Verificar tener Postman instalado en tu sistema.
-
Dependencias: Instalar dependencias necesarias ejecutando:
python -m venv [nombre_entorno | venv][nombre_entorno | venv]\Scripts\activatepip install -r requirements.txtpip list -
Archivo
.env: Crea un archivo.enven el directorio raiz del proyecto con las siguientes variables:ENV=developmentSILS_ENV=developmentLOG_LEVEL=debugDB_HOST=sils_mysql_hostDB_PORT=sils_mysql_portDB_NAME=sils_mysql_dbnameDB_USER=sils_mysql_dbuserDB_PASSWORD=sils_mysql_dbpasswordBQ_PROJECT=devBQ_DATASET=test_datasetPROJECT_ID=devBQ_ENDPOINT="http://localhost:9050/"BQ_EXTERNAL_QUERY=external_query_connectionINSTANCE_UNIX_SOCKET=instancia_cloudsql_sils_des_sqlTIME_ZONE=America/Argentina/CordobaSERVICE_ACCOUNT_EMAIL=tasks_service_account_emailGOOGLE_APPLICATION_CREDENTIALS=secret.jsonREDIS_HOST=127.0.0.1REDIS_PORT=6379
Ejecución del Script con functions-framework
-
Crear un archivo
docker-compose.ymlen el directorio raiz del proyecto con el contenido:services:db:image: mysql:latestcontainer_name: mysql_containerenvironment:MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}MYSQL_DATABASE: ${DB_NAME}ports:- "${DB_PORT}:3306"volumes:- db_data:/var/lib/mysqlnetworks:- app_networkbigquery:image: ghcr.io/goccy/bigquery-emulator:latestcontainer_name: bigquery_emulatorcommand: ["--project=dev"]ports:- "9050:9050" # Puerto HTTP para consultas- "9060:9060" # Puerto gRPC (opcional)volumes:- bigquery_data:/datanetworks:- app_networkredis:image: redis:latestcontainer_name: redis_containerports:- "${REDIS_PORT}:6379"restart: alwaysnetworks:- app_networkvolumes:db_data:bigquery_data:networks:app_network:driver: bridge -
Levantar el contenedor de Docker con bases de datos de prueba:
docker-compose up --build -d -
En caso de querer eliminar el contenedor:
docker-compose down -v -
Revisar Logs de BigQuery:
docker-compose logs -f bigquery -
Ejecutar servidor de functions-framework para la función
migration_task_processor:functions-framework --target=migration_task_processor --port=8081 --debug -
Probar la función
migration_task_processorenviando por medio de peticion HTTP POST de Postman a la URLhttp://localhost:8081con el body de la petición en formato HTTP:{"source_table": "incidentesHistoricos","dest_table": "historico_incidentes","filter_column": "fechaGPS","start_marker": 39661120,"end_marker": 39711522,"table_structure": [{ "Field": "id", "Type": "int(11)" },{ "Field": "fecha", "Type": "datetime" },...]} -
Comprobar correcta inserción de datos en alguna de las tablas mediante Postman:
POST http://localhost:9050/projects/test/queriesContent-Type: application/jsonBody:{"query": "SELECT * FROM test.test_dataset.historico_incidentes LIMIT 1"}